
template<class T >
class fun_obj {
public:
    fun_obj(T &container):container_(container){
    }
    void operator()(){
    }
    template < class N, class ...Args>
    void operator()(N head, Args... args) {
        container_.push_back(head);
        operator()( args...);
    }
private:
    T &container_;
};